home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / tspa3150.zip / TSUNTB.TST < prev    next >
Text File  |  1992-09-27  |  6KB  |  280 lines

  1. (* This is a test program for the TSUNTB.TPU unit
  2.    Updated 27-Jul-89, 18-Oct-89, 4-Jan-91, 27-Oct-91, 24-Aug-92,
  3.            27-Sep-92 *)
  4.  
  5. uses TSUNTB;
  6.  
  7. const loop = 200;   (* If you do want to make it quickly, change this to 1 *)
  8.  
  9. var time : real;    (* For timing the tests *)
  10.  
  11. procedure LOGO;
  12. begin
  13.   writeln;
  14.   writeln ('TSUNTB unit test by Prof. Timo Salmi');
  15.   writeln ('University of Vaasa, Finland, ts@uwasa.fi');
  16.   writeln;
  17. end;
  18.  
  19. (* Raise a positive number to a power the traditional way *)
  20. procedure TEST1;
  21. var i : integer;
  22.     a : real;
  23. begin
  24.   time := TIMERFN;
  25.   for i := 1 to loop do
  26.     a := POWERFN (2, 15);
  27.   time := TIMERFN - time;
  28.   writeln ('POWERFN 2^15 = ', a:0:0);
  29.   writeln ('Elapsed ', time:0:2);
  30.   writeln;
  31. end;
  32.  
  33. (* Raise a longint number to a power fast *)
  34. procedure TEST1A;
  35. var i : integer;
  36.     a : real;
  37. begin
  38.   time := TIMERFN;
  39.   for i := 1 to loop do
  40.     a := POWERLFN (-2, 15);
  41.   time := TIMERFN - time;
  42.   writeln ('POWERLFN -2^15 = ', a:0:0);
  43.   writeln ('Elapsed ', time:0:2);
  44.   writeln;
  45. end;  (* test1a *)
  46.  
  47. (* Raise any number to a power, the improved function *)
  48. procedure TEST2;
  49. var i : integer;
  50.     a : real;
  51. begin
  52.   time := TIMERFN;
  53.   for i := 1 to loop do
  54.     a := POWERGFN (-2, 15);
  55.   time := TIMERFN - time;
  56.   writeln ('POWERGFN -2^15 = ', a:0:0);
  57.   writeln ('Elapsed ', time:0:2);
  58.   writeln;
  59. end;  (* test2 *)
  60.  
  61. (* Raise two to a power, that is 2^exponent, very fast *)
  62. procedure TEST3;
  63. var i : integer;
  64.     a : word;
  65. begin
  66.   time := TIMERFN;
  67.   for i := 1 to loop do
  68.     a := TWOTOFN (15);
  69.   time := TIMERFN - time;
  70.   writeln ('TWOTOFN 2^15 = ', a);
  71.   writeln ('Elapsed ', time:0:2);
  72.   writeln;
  73. end;  (* test3 *)
  74.  
  75. (* Convert a binary string fast to a decimal word *)
  76. procedure TEST4;
  77. var i : integer;
  78.     a : word;
  79. begin
  80.   time := TIMERFN;
  81.   for i := 1 to loop do
  82.                    {123456789 123456}
  83.     a := BINDECFN ('1000000000000000');
  84.   time := TIMERFN - time;
  85.   writeln ('BINDECFN (''1000000000000000'') = ', a);
  86.   writeln ('Elapsed ', time:0:2);
  87.   writeln;
  88. end;  (* test4 *)
  89.  
  90. (* Convert a decimal word to a binary string fast *)
  91. procedure TEST5A;
  92. const x = 32768;
  93. var i : integer;
  94.     a : string;
  95. begin
  96.   time := TIMERFN;
  97.   for i := 1 to loop do
  98.     a := BINFN (x);
  99.   time := TIMERFN - time;
  100.   writeln ('BINFN (', x:0, ') = ', a);
  101.   writeln ('Elapsed ', time:0:2);
  102.   writeln;
  103. end;  (* test5a *)
  104.  
  105. (* Convert a decimal longint to a binary string fast *)
  106. procedure TEST5B;
  107. var i : integer;
  108.     a : string;
  109.     x : longint;
  110. begin
  111.   x := 32768;
  112.   time := TIMERFN;
  113.   for i := 1 to loop do
  114.     a := LBINFN (x);
  115.   time := TIMERFN - time;
  116.   writeln ('LBINFN (', x:0, ') = ', a);
  117.   writeln ('Elapsed ', time:0:2);
  118.   writeln;
  119. end;  (* test5b *)
  120.  
  121. (* Convert a decimal byte to a binary string fast *)
  122. procedure TEST5C;
  123. var i : integer;
  124.     a : string;
  125.     x : longint;
  126. begin
  127.   x := 255;
  128.   time := TIMERFN;
  129.   for i := 1 to loop do
  130.     a := BBINFN (x);
  131.   time := TIMERFN - time;
  132.   writeln ('BBINFN (', x:0, ') = ', a);
  133.   writeln ('Elapsed ', time:0:2);
  134.   writeln;
  135. end;  (* test5c *)
  136.  
  137. (* Convert a number from any base to any base (2-36) *)
  138. procedure TEST6;
  139. var i      : integer;
  140.     result : string;
  141.     x      : string;
  142.     b1, b2 : byte;
  143. begin
  144.   x := '32768';
  145.   b1 := 10;
  146.   b2 := 2;
  147.   time := TIMERFN;
  148.   for i := 1 to loop do
  149.     result := CONVBFN (x, b1, b2);
  150.   time := TIMERFN - time;
  151.   writeln ('CONVBFN (', x, ',', b1:0, ',', b2:0, ') = ', result);
  152.   writeln ('Elapsed ', time:0:2);
  153.   writeln;
  154. end;  (* test6 *)
  155.  
  156. (* Convert a hexadecimal string fast to a decimal word *)
  157. procedure TEST7;
  158. var i : integer;
  159.     d : word;
  160.     h : string;
  161. begin
  162.   h := 'F1a7';
  163.   time := TIMERFN;
  164.   for i := 1 to loop do
  165.     d := HEXDECFN (h);
  166.   time := TIMERFN - time;
  167.   writeln ('HEXDECFN (', h, ') = ', d);
  168.   writeln ('Elapsed ', time:0:2);
  169.   writeln;
  170. end;  (* test7 *)
  171.  
  172. (* Convert a hexadecimal string (max 7FFFFFFF) to a decimal longint *)
  173. procedure TEST7A;
  174. var i : integer;
  175.     d : longint;
  176.     h : string;
  177. begin
  178.   h := '0000F1a7';
  179.   time := TIMERFN;
  180.   for i := 1 to loop do
  181.     d := HEXLNGFN (h);
  182.   time := TIMERFN - time;
  183.   writeln ('HEXLNGFN (', h, ') = ', d);
  184.   writeln ('Elapsed ', time:0:2);
  185.   writeln;
  186. end;  (* test7a *)
  187.  
  188. (* Convert a decimal word to a hexadecimal string fast *)
  189. procedure TEST8A;
  190. var i : integer;
  191.     a : string;
  192.     d : word;
  193. begin
  194.   d := 32768;
  195.   time := TIMERFN;
  196.   for i := 1 to loop do
  197.     a := HEXFN (d);
  198.   time := TIMERFN - time;
  199.   writeln ('HEXFN (', d:0, ') = $', a);
  200.   writeln ('Elapsed ', time:0:2);
  201.   writeln;
  202. end;  (* test8A *)
  203.  
  204. (* Convert a decimal longint to a hexadecimal string fast *)
  205. procedure TEST8B;
  206. var i : integer;
  207.     a : string;
  208.     x : longint;
  209. begin
  210.   x := maxint+1;
  211.   time := TIMERFN;
  212.   for i := 1 to loop do
  213.     a := LHEXFN (x);
  214.   time := TIMERFN - time;
  215.   writeln ('LHEXFN (', x:0, ') = $', a);
  216.   writeln ('Elapsed ', time:0:2);
  217.   writeln;
  218. end;  (* test8b *)
  219.  
  220. (* Convert a decimal byte to a hexadecimal string fast *)
  221. procedure TEST8C;
  222. var i : integer;
  223.     a : string;
  224.     x : byte;
  225. begin
  226.   x := 255;
  227.   time := TIMERFN;
  228.   for i := 1 to loop do
  229.     a := BHEXFN (x);
  230.   time := TIMERFN - time;
  231.   writeln ('BHEXFN (', x:0, ') = $', a);
  232.   writeln ('Elapsed ', time:0:2);
  233.   writeln;
  234. end;  (* test8c *)
  235.  
  236. procedure TEST9;
  237. var a : word;
  238. begin
  239.   a := BTEWRDFN (1, 2);
  240.   writeln (hi(a), ' ', lo(a));
  241.   writeln (a);
  242. end;  (* test9 *)
  243.  
  244. procedure TEST10;
  245. var a : longint;
  246. begin
  247.   a := WRDLNGFN (1, 2);
  248.   writeln (HIWORDFN(a), ' ', LOWORDFN(a));
  249.   writeln (a);
  250. end;  (* test10 *)
  251.  
  252. (* Main program
  253.    If you just want a particular test, comment the others away *)
  254. begin
  255.   LOGO;    (* If you want pauses, insert readln where appropriate *)
  256.   {        (* If you want only part of the tests, comment the others away *)
  257.   TEST1;
  258.   TEST1A;
  259.   TEST2;
  260.   TEST3;
  261.   TEST4;
  262.   }
  263.   TEST5A;
  264.   TEST5B;
  265.   TEST5C;
  266.   {
  267.   TEST6;
  268.   TEST7;
  269.   TEST7A;
  270.   }
  271.   TEST8A;
  272.   TEST8B;
  273.   TEST8C;
  274.   {
  275.   TEST9;
  276.   TEST10;
  277.   }
  278.   write ('Press <-'' '); readln;
  279. end.  (* tsuntb.tst *)
  280.